package org.apache.flink.cep.listen;

import org.apache.flink.cep.pattern.Pattern;

import java.io.Serializable;

/**
 * @author BigHead
 * @date 2021/10/28 14:25
 * @description CepListener
 */
public interface CepListener<T> extends Serializable {

    /**
     * @Description: 留给用户判断当接受到元素的时候，是否需要更新CEP逻辑
     * @param: []
     * @return: java.lang.Boolean
     * @auther: BigHead
     * @date: 2021/10/28 16:11
     */
    Boolean needChange(T element);
    /**
     * @Description: 当needChange为true时会被调用，留给用户实现返回一个新逻辑生成的pattern对象
     * @param: []
     * @return: org.apache.flink.cep.pattern.Pattern
     * @auther: BigHead
     * @date: 2021/10/28 16:11
     */
    Pattern<T,?> returnPattern(T flagElement);
}
